$(function(){
	$("#addModal").modal();
});

function loadTable(tableName){
	$("tbody").empty();
	$("#showQuery").empty();
	var className = tableName.substring(0,1).toUpperCase()+tableName.substring(1);
	//初始化showQuery
	var htmlStr1 = '<option value="">选择搜索字段(仅支持String类型)</option>';
	$.ajax({
		url:"durose_getColumns?tableName="+tableName,
		success:function(data){
			for( i in data){
				//初始化表格
				var htmlStr = '<tr class="dataSub"><input name="tableName" value="'+tableName+'" type="hidden">';
				htmlStr+='<input name="queryName" class="queryName" value="" type="hidden">'
				htmlStr+='<td><input style="background-color:#E9ECEF" name="columnName" value="'+data[i]+'" readOnly="readOnly"></td>';
				htmlStr+='<td><input name="columnChinaName" value=""></td>';
				htmlStr+='<td><select class="custom-select" name="columnType">';
				htmlStr+='<option value="text">文本</option>';
				htmlStr+='<option value="radio">单选按钮</option>';
				htmlStr+='<option value="select">下拉框</option>';
				htmlStr+='<option value="primary">主键</option>';
				htmlStr+='<option value="date">时间</option>';
				htmlStr+='<option value="textarea">文本域</option>';
				htmlStr+='<option value="number">数字</option>';
				htmlStr+='<option value="picture">图片</option>';
				htmlStr+='<option value="hidden">隐藏</option>';
				htmlStr+='</select></td>';
				htmlStr+='<td><input name="columnDefaultValue" value=""></td>';
				htmlStr+='<td><input name="columnRelaTable" value="" type="hidden"> </td>';
				htmlStr+='<td><input name="columnExtraValue" value="" type="hidden"> </td>';
				htmlStr+='<td><input name="columnForeignValue" value="" type="hidden"></td>';
				htmlStr+='</tr>';
				$("tbody").append(htmlStr);
				
				//初始化表名类名
				$("#tableName").val(tableName);
				$("#className").val(className);
				$("#addModal").modal("hide");
				
				//初始化showQuery
				htmlStr1+='<option value="'+data[i]+'">'+data[i]+'</option>';
			}
			$("#showQuery").append(htmlStr1);
		}
	});
	
	
	$("body").on("click","select[name='columnType'] option",function(){
		initData(this);
		var obj = this;
		if($(obj).attr("value")=="radio"){
			var inputStr = '<input type="text" name="columnExtraValue" placeHolder="用$符号来分割,男$女$">';
			$(obj).parent().parent().siblings().eq(6).html(inputStr);
		}else if($(obj).attr("value")=="select"){
			var inputStr='<select class="custom-select" name="columnRelaTable">';
			inputStr+='<option value="">是否关联如下表</option>'
			$.ajax({
				url:"durose_getTableNames",
				success:function(data){
					for(i in data){
						inputStr+='<option value="'+data[i]+'">'+data[i]+'</option>';
					}
					inputStr+='</select>';
					$(obj).parent().parent().siblings().eq(5).html(inputStr);
				}
			});
			var inputStr1 = '<input type="text" name="columnExtraValue" placeHolder="用$符号来分割,男$女$">';
			$(obj).parent().parent().siblings().eq(6).html(inputStr1);
		}
	});
	
	$("body").on("click","select[name='columnRelaTable'] option",function(){
		var obj = this;
		if($(obj).attr("value")==""){
			
		}else{
			var tableName = $(obj).attr("value");
			var inputStr='<select class="custom-select" name="columnExtraValue">';
			inputStr+='<option value="">请选择外联表的字段(外表主键)</option>';
			var inputStr1='<select class="custom-select" name="columnForeignValue">';
			inputStr1+='<option value="">请选择外表主键对应值</option>';
				
			$.ajax({
				url:"durose_getColumns?tableName="+tableName,
				success:function(data){
					for(i in data){
						inputStr+='<option value="'+data[i]+'">'+data[i]+'</option>';
						inputStr1+='<option value="'+data[i]+'">'+data[i]+'</option>';
					}
					inputStr+='</select>';
					inputStr1+='</select>';
					$(obj).parent().parent().siblings().eq(6).html(inputStr);
					$(obj).parent().parent().siblings().eq(7).html(inputStr1);
				}
			});
		}
	});
	
	//初始化待选框,因为在选择外表关联或者其他类型的值的时候，如果多次点击，则可能会造成数据错乱，所以每次点击前都把上一次的数据删除
	function initData(obj){
		$(obj).parent().parent().siblings().eq(5).html('<input name="columnRelaTable" value="" type="hidden">');
		$(obj).parent().parent().siblings().eq(6).html('<input name="columnExtraValue" value="" type="hidden">');
		$(obj).parent().parent().siblings().eq(7).html('<input name="columnForeignValue" value="" type="hidden">');
	}
	
	$("body").on("click","#showQuery option",function(){
		var queryName = $(this).attr("value");
		$(".queryName").each(function(){
			$(this).val(queryName);
		});
	});
	
	$("#submit").click(function(){
		var jsonArrayStr = JSON.stringify(submitData());
		if(!isEmpty()){
			$.ajax({
				url:'durose_add',
				type:'post',
				data:jsonArrayStr,
				contentType:"application/json;charset=UTF-8",
				success:function(data){
					if(data.status=="OK"){
						//如果代码生成成功，再进行菜单项的生成
						var menu_url = $("#tableName").val();
						var menu_name=$("#menu_name").val();
						var menu_parent = $("#menu_parent").val();
						$.ajax({
							url:'sys_menu_add',
							data:{menu_url:menu_url,menu_name:menu_name,menu_parent:menu_parent},
							success:function(data){
								if(data.status=="OK"){
									alert("生成成功！刷新项目即可运行！");
								}
							}
						});
					}
				}
			})
		}
	});
	
	//收集json数据
	function submitData(){
		var jsonArray = new Array();
		$(".dataSub").each(function(){
			var json = {};
			json.tableName  =$(this).children().eq(0).val();
			json.queryName = $(this).children().eq(1).val();
			json.columnName = $(this).children().eq(2).children().eq(0).val();
			json.columnChinaName = $(this).children().eq(3).children().eq(0).val();
			json.columnType = $(this).children().eq(4).children().eq(0).val();
			json.columnDefaultValue = $(this).children().eq(5).children().eq(0).val();
			json.columnRelaTable = $(this).children().eq(6).children().eq(0).val();
			json.columnExtraValue = $(this).children().eq(7).children().eq(0).val();
			json.columnForeignValue = $(this).children().eq(8).children().eq(0).val();
			jsonArray.push(json);
		});
		return jsonArray;
	}
	
	function isEmpty(){
		if($("#menu_name").val()==""){
			alert("模块名称不能为空！");
			return true;
		}else if($("#menu_parent").val()==""){
			alert("所属菜单不能为空！");
			return true;
		}else if($("#showQuery").val()==""){
			alert("搜索字段不能为空！");
			return true;
		}else{
			return false;
		}
		
	}
	
	
}